package myschool.test3;

/**
 * @author oldliu
 * @since 1.0
 */
public class TestMAx {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, -2, 5, 6};
        int dpMax = nums[0], dpMin = nums[0];
// 最终结果的最大值
        int max = nums[0];
// 遍历求解
        for (int i = 1; i < nums.length; i++) {
            // 更新 dpMin 的时候需要 dpMax 之前的信息，所以先保存起来
            int preMax = dpMax;
// 求出 (dpMin * nums[i])、(dpMax * nums[i])、nums[i] 这三个数的最大值和最小值
            dpMax = Math.max(dpMin * nums[i], Math.max(dpMax * nums[i], nums[i]));
            dpMin = Math.min(dpMin * nums[i], Math.min(preMax * nums[i], nums[i]));
// 更新最终的最大值
            max = Math.max(max, dpMax);
        }
        System.out.println(max);
    }

}

